package ThreadPoolDemo1;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * @Author: ylc
 * @Description:线程池的创建与使用
 * @Date Created in 2022-04-23 13:32
 */
public class ThreadPoolDemo1 {
    public static void main(String[] args) {
        /*
            Executors类中有个创建线程池的方法如下：
                public static ExecutorService newFixedThreadPool(int nThreads)
                 创建固定线程数的线程池,返回线程池对象。(创建的是有界线程池,也就是池中的线程个数可以指定最大数量)
            使用线程池对象的方法：
                public Future<?> submit(Runnable task)`:获取线程池中的某一个线程对象，并执行
                Future接口：用来记录线程任务执行完毕后产生的结果。线程池创建与使用。
        */
        //1.调用Executors工厂类生产一个指定线程数量的线程池
        ExecutorService es = Executors.newFixedThreadPool(2);
        //2.调用线程池中的方法submit，传递线程任务，开启线程执行run方法
        es.submit(new RunnableImpl());//pool-1-thread-1,创建了一个新线程执行
        //3.线程池会一直开启，使用完了线程，会自动把线程归还给线程池
        es.submit(new RunnableImpl());//pool-1-thread-2,创建了一个新线程执行
        es.submit(new RunnableImpl());//pool-1-thread-1,创建了一个新线程执行

        es.shutdown();//销毁线程池（不建议执行）
       //es.submit(new RunnableImpl());//抛出异常
    }
}
